\chapter{Analyse de l'existant}
\paragraph{}Les problèmes utilisant les matrices de convolution sont au c{\oe}ur de domaines tels que le traitement d'image ou la modélisation scientifique.
\section{Les précédents TER}
Deux projets de mêmes caractéristiques ont été proposés aux étudiants de Master Informatique les années précédentes.
\paragraph{}L'objectif du TER 2010 était de programmer des codes pouvant s'adapter à différentes architectures de manière efficace. L'idée était d'isoler des parties de code pouvant bénéficier d'accélération et d'en proposer plusieurs implantations pour différents accélérateurs. Ces optimisations étaient ensuite choisies et insérées à la compilation en fonction de l'architecture cible. Plusieurs implantations ont été réalisées, en séquentiel, SSE, OpenMP, MPI et CUDA.
\paragraph{}Le sujet du TER 2011 avait pour but de proposer une ébauche de bibliothèque, en reprenant les travaux de l'année précédente, offrant la possibilité d'utiliser simultanément les optimisations SSE et CUDA. Ces étudiants ont essentiellement travaillé sur l'algorithme des N-Corps. Leur implantation permet de le résoudre en utilisant les instructions CPU (SSE) ou bien les instructions GPU (CUDA).  
\section{Les matrices de convolution}
Le domaine le plus répandu où sont utilisées les matrices de convolution est le traitement d'images. Des logiciels tels que GIMP les utilisent dans le traitement et transformation des images~\cite{Gimp}.

\paragraph{}La modélisation scientifique n'est pas en reste, beaucoup de simulations se basent sur des matrices et sont traitées par convolution, avec par exemple l'écoulement des fluides, la diffusion de chaleur ou le traitement du signal.

\section{La parallélisation}
La plupart des problèmes de matrice de convolution sont traité de manière séquentielle. Quelques travaux de modélisation scientifique ont été réalisé sur la base de super-calculateurs comme le calcul de structure électronique~\cite{ParallelisationElect}, ou encore avec des algorithmes distribués.
\paragraph{}Certains problèmes comme l'écoulement des fluides et le filtre Sobel sont disponible sur le site de Nvidia~\cite{NvidiaCuda}. Cependant même si certains problèmes pouvant être traités avec une matrice de convolution ont été implémentés en CUDA ou parallélisés avec une autre technologie, il n'existe pas d'implémentation générique proposant la résolution de problèmes différents.

